﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using DSAServer.Models;
using DSAServer.Utils;
using UrlHelper = DSAServer.Utils.UrlHelper;

namespace DSAServer.Controllers
{
    public class BaseController : Controller
    {
        protected T getRequestData<T>(bool autoCheck = true)
        {
            string para = this.Request["data"];
            T data = JsonHelper.DeserializeObject<T>(CharSetHelper.UrlDeCode(para, Encoding.UTF8));
            if (data == null)
            {
                LogUtil.Info("error:" + para);
                throw new ArgumentException("error data!");
            }
            else
            {
                //LogUtil.Info("para:" + para);
            }
            return data;
        }

        protected override void OnException(ExceptionContext filterContext)
        {
            if (filterContext.Exception is ArgumentException)
            {
                filterContext.Result = new JsonResult() { Data = new InvokeResult() { msg = filterContext.Exception.Message }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
            }
            else
            {
                filterContext.Result = new JsonResult() { Data = new InvokeResult() { msg = filterContext.Exception.Message }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };//"An error occurred while executing"
            }

            filterContext.ExceptionHandled = true;
        }
    }
}